2021年四川省大学生网络安全技能大赛 writeup
师傅们tql,排名第八,得了个证书,哈哈哈
一、 战队信息
战队名称:boy_next_the_door
战队编号:lx_31426d
所属单位:成都信息工程大学
战队成员姓名:吴昊 刘仕林 张舒
二、解题情况
三、 解题过程
题目一 easyyaml
操作内容:
去网上搜索了一下别人的poc
https://github.com/artsploit/yaml-payload
https://github.com/mbechler/marshalsec
https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true
将其更改了一下
这个题考察snakeyaml的反序列化
但是有一点需要注意的是
address类的属性ext为Object.gadget从第二个链接获取
将要执行的Java代码放入AwesomeScriptEngineFactory.java中并进行编译:
1 | javac src / artsploit / AwesomeScriptEngineFactory.java |
然后即可进行正常的攻击
flag值
1 | flag{31df1d6dca4683ad8c27acf8c7c04326} |
题目二 papapa
操作内容:
扫描目录发现robots.txt
看robots.txt有提示main.php
传参a发现了加密的代码
两次base64解码 再 16进制解码得到源码
md5数组绕过,正则那可以-绕过,也可以用%0a绕过
然后知道了system()能命令执行
构造payload
使用ls 看到wobushif0agaaa.txt
cat这个文件
1 | <?php |
最后的payload
1 | /main.php?a[]=1&b[]=2&c=-&d=O%3A4%3A"NoVu"%3A1%3A%7Bs%3A7%3A"command"%3Bs%3A22%3A"cat+wobushif0agaaa.txt"%3B%7D |
脚本
1 | <?php |
flag值
flag{73ac78436f0e761123a9888bf24a5c79}
题目三 Misc 我的世界
操作内容:
下载文件后打开我的世界,发现真的是个游戏:
在信标处宝箱内可以得到一本名字为flag1的书,打开后发现以上字符串,初步断定是**栅栏加密**,先解一下,这里我用的在线工具,当栏数为14时得到
很像flag了,尝试提交但是不对,继续在地图内探索,在信标旁内的洞穴内发现有如下:
可以看到在信标附近有异常,飞过去看,是这个:
结合flag=1+1,经过尝试得到flag,居然是把CTF515加在后面,不得不说这个题确实有点脑洞的感觉。
如该题使用自己编写的脚本请详细写出,不允许截图
1 | 无 |
flag值上传图片失败。错误信息: Comman
:
1 | flag{scdxsCTF2021422CTF515} |
题目四 Misc disk-recover
操作内容:
下载解压题目得到upload.pcapng文件,直接用7-Zip可以解压出一个已损坏的光盘映像文件disk-recovery.img,直接用DiskGenius恢复。
先打开损坏文件:
再选中恢复
得到了一个.xls文件,
打开就可以看到flag
flag:
1 | flag{E7A10C15E26AA5750070EF756AAA1F7C} |
题目五 Misc pack
操作内容:
ctf.exe,pe view打开,可以看到节区名错了
upx脱壳,脱壳先修改节区名
脱壳完后,用ResourceHacker.exe打开,看资源,得到flag分为2部分
脚本:
无
flag:
flag{0bed66d154ccbdd07a6342abf97a5cfc}
题目六 em0ji
操作内容:
下载附件打开
前面四个肯定是flag
所以借此线索进行收集
网上搜索emoji的官方网站
https://www.emojiall.com/zh-hans/emoji/%F0%9F%98%81
查看简短代码的首字母,拼接得到
脚本:
无
flag
1 | flag{emojiisverysimple} |
题目七 easy_re
操作内容:
upx解壳,手动或者upx脱。
分析流程
脚本
脚本
#include<stdio.h>
int main()
{
char code[]="'- &:8.4a 3$a&3$ 5```<";
int i;
for(i=0;i<22;i++)
{
printf("%c",code[i]^0x41);
}
}
flag值
1 | flag{you are great!!!} |
题目八 easy.pyc
操作内容:
pyc转py
1 | uncompyle6 -o C:\Users\hp\Downloads\easy.py C:\Users\hp\Downloads\easy.pyc |
然后看流程
脚本
脚本
import base64
url = "XlhlX0sMEWNiDxQQDgwTXl5eZRFgFWMOFBATXhMMYw8PD2UMZUk="
str_url = base64.b64decode(url)
for i in str_url:
x=(i-6)^62
print(chr(x),end='')
flag值
1 | flag{85cb704683fffa5d1c6043f38c777a8a} |
题目九 base变形计.exe
操作内容:
upx脱壳
先得到str2
#include<stdio.h>
int main(void)
{
int v9[]={0x00000050,0x00000067,0x00000072,0x00000062,0x00000050,0x00000019,0x00000079,0x0000001e,0x00000047,0x0000005e,0x0000004f,0x00000072,0x00000044,0x0000005d,0x0000005f,0x0000001b,0x00000044,0x00000070,0x00000062,0x00000063,0x00000047,0x0000005d,0x00000047,0x00000072,0x00000045,0x0000005e,0x00000050,0x00000063,0x00000047,0x00000070,0x0000005b,0x00000018,0x00000050,0x00000060,0x00000069,0x0000001f,0x00000053,0x0000005d,0x0000004c,0x00000066,0x00000045,0x0000005e,0x00000053,0x00000072,0x00000053,0x00000070,0x0000005b,0x0000007d,0x00000053,0x00000019,0x0000001a,0x00000017};
char str2[]="0000000000000000000000000000000000000000000000000000";
int i;
for(i=0;i<=51;i++)
{
str2[i]=42^v9[i];
printf("%c",str2[i]);
}
}
//zMXHz3S4mteXnwu1nZHImwmXotzImZq2zJC5ywfLotyXyZqWy30=
变表base解密
import base64
import string
str1 = 'zMXHz3S4mteXnwu1nZHImwmXotzImZq2zJC5ywfLotyXyZqWy30='
string1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/'
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print(base64.b64decode(str1.translate(str.maketrans(string1, string2))))
flag
1 | flag{81115e578b1c196b346f79aae961c40c} |
题目十 2021年四川省大学生网络安全技能大赛问卷调查
操作内容:
有手就行
脚本:
无
flag:
1 | flag{ZWNkeHNjdGZpc2cwMGQ} |